package game.controler.gestionnaires.elementjeu;

import game.controler.gestionnaires.splashscreen.GestionnaireSplashScreens;
import game.model.Plan;
import java.util.HashMap;

/**
 *
 * @author Gab'z
 */
public class GestionnairePlans {

    private static GestionnairePlans GPlans = null;
    private static HashMap<String, Plan> listePlans = new HashMap<String, Plan>();
    private GestionnaireObjets Gobjets;
    private GestionnairePnj Gpnj;
    private GestionnaireDecors Gdecors;
    private GestionnaireFous Gfous;
    private GestionnaireSplashScreens GsplashScreen;

    private GestionnairePlans() {
        System.out.println("Initialisation des plans");
        Gobjets = GestionnaireObjets.getGobjets();
        Gpnj = GestionnairePnj.getGpnj();
        Gdecors = GestionnaireDecors.getGdecors();
        Gfous = GestionnaireFous.getGfous();
        GsplashScreen = GestionnaireSplashScreens.getGsplashScreen();
        initialiserPlans();
    }

    public static GestionnairePlans getGP() {
        if (GPlans == null) {
            GPlans = new GestionnairePlans();
        }
        return GPlans;
    }

    public Plan getPlan(String ID) {
        return listePlans.get(ID);
    }

    private void initialiserPlans() {
        Plan plan;
        System.out.println("initialiserPlans");
        plan = createPlan("0", "Votre chambre");
        //plan.setDirection(Plan.NORD, Boolean.TRUE, "1");
        ajouterPlan(plan);

//        plan = createPlan("1", "La pièce du fond");
//        plan.setDirection(Plan.SUD, Boolean.TRUE, "0");
//        ajouterPlan(plan);


        plan = createPlan("1", "Couloir");
        ajouterPlan(plan);

        plan = createPlan("2", "Un placard");
        plan.setDirection(Plan.SUD, Boolean.TRUE, "1");
        ajouterPlan(plan);

        plan = createPlan("3", "Sas d'entrée");
        plan.setDirection(Plan.SUD, Boolean.TRUE, "1");
        ajouterPlan(plan);

        plan = createPlan("4", "Bureau du médecin");
        plan.setDirection(Plan.SUD, Boolean.TRUE, "1");
        ajouterPlan(plan);

        plan = createPlan("5", "Patio");
        //plan.setDirection(Plan.SUD, Boolean.TRUE, "1");
        ajouterPlan(plan);
    }

    private void ajouterPlan(Plan plan) {
        listePlans.put(plan.getId(), plan);
        System.out.println("plan id = " + plan.getId() + " ajouté");
    }

    private Plan createPlan(String idPlan, String description) {
        return new Plan(
                idPlan,
                description,
                Gobjets.getListeObjetsPlan(idPlan),
                Gdecors.getListeDecorsPlan(idPlan),
                Gpnj.getListePnjPlan(idPlan),
                Gfous.getListeFousPlan(idPlan));
    }
}
